home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_05 / allison / date.h < prev    next >
C/C++ Source or Header  |  1994-03-03  |  2KB  |  103 lines

  1.  
  2. LISTING 2 -
  3. // date.h
  4.  
  5. // Forward declarations
  6. class istream;
  7. class ostream;
  8.  
  9. class Date
  10. {
  11. public:
  12.     // Constructors
  13.     Date();
  14.     Date(int m, int d, int y);
  15.  
  16.     // Accessor Functions
  17.     int month() const;
  18.     int month(int);
  19.     int day() const;
  20.     int day(int);
  21.     int year() const;
  22.     int year(int);
  23.  
  24.     // Relational operators
  25.     int operator<(const Date& d2) const;
  26.     int operator<=(const Date& d2) const;
  27.     int operator>(const Date& d2) const;
  28.     int operator>=(const Date& d2) const;
  29.     int operator==(const Date& d2) const;
  30.     int operator!=(const Date& d2) const;
  31.  
  32.     // Stream I/O operators
  33.     friend ostream& operator<<(ostream&, const Date&);
  34.     friend istream& operator>>(istream&, Date&);
  35.  
  36.     static int isleap(int y);
  37.  
  38. private:
  39.     int month_;
  40.     int day_;
  41.     int year_;
  42.  
  43.     static int dtab[2][13];
  44.     static int compare(const Date&, const Date&);
  45. };
  46.  
  47. inline int Date::month() const
  48. {
  49.     return month_;
  50. }
  51.  
  52. inline int Date::day() const
  53. {
  54.     return day_;
  55. }
  56.  
  57. inline int Date::year() const
  58. {
  59.     return year_;
  60. }
  61.  
  62. inline Date::Date(int m, int d, int y)
  63. {
  64.     month_ = m;
  65.     day_ = d;
  66.     year_ = y;
  67. }
  68.  
  69. inline int Date::isleap(int y)
  70. {
  71.     return y%4 == 0 && y%100 != 0 || y%400 == 0;
  72. }
  73.  
  74. inline int Date::operator<(const Date& d2) const
  75. {
  76.     return compare(*this,d2) < 0;
  77. }
  78.  
  79. inline int Date::operator>(const Date& d2) const
  80. {
  81.     return compare(*this,d2) > 0;
  82. }
  83.  
  84. inline int Date::operator<=(const Date& d2) const
  85. {
  86.     return compare(*this,d2) <= 0;
  87. }
  88.  
  89. inline int Date::operator>=(const Date& d2) const
  90. {
  91.     return compare(*this,d2) >= 0;
  92. }
  93.  
  94. inline int Date::operator==(const Date& d2) const
  95. {
  96.     return compare(*this,d2) == 0;
  97. }
  98.  
  99. inline int Date::operator!=(const Date& d2) const
  100. {
  101.     return compare(*this,d2) != 0;
  102. }
  103.